package com.wang.springframework.beans.factory;

import com.wang.springframework.beans.BeansException;

/**
 * @author wangjianhua
 * @Description
 * @date 2021/8/24/024 18:07
 **/
public interface BeanFactory {

    /**
     * 获取bean
     * @param name 名字
     * @return bean
     * @throws BeansException BeansException
     */
    Object getBean(String name) throws BeansException;


    /**
     * 获取bean
     * @param name 名字
     * @param args 参数
     * @return bean
     * @throws BeansException BeansException
     */
    Object getBean(String name,Object... args) throws BeansException;

    /**
     * 提供class类型 从而转换bean类型 不用再手动转换
     * @param name 名称
     * @param requiredType 需要转换的class类型
     * @param <T> 泛型
     * @return bean
     * @throws BeansException 异常
     */
    <T> T getBean(String name,Class<T> requiredType) throws BeansException;
}
